package com.zhiyou100.dao;

import com.zhiyou100.entity.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * 写一个通用的接口 被所有dao使用
 * obj和T需要实现序列号接口
 *
 * @param <Obj>
 * @param <Id>
 * @author yang
 */
public interface EntityDao<Obj, Id> {


    /**
     * 添加一个
     *
     * @param o 添加的对象
     */
    void addOne(Obj o);


    /**
     * 删除一个
     *
     * @param id id
     */
    void deleteOne(Id id);

    /**
     * 更新一个
     *
     * @param o 要更新的对象
     */
    void updateOne(Obj o);

    /**
     * 获取所有
     *
     * @return list
     */
    List<Obj> getAll();

    /**
     * 根据 id 获取一个
     *
     * @param id id
     * @return 获取的对象
     */
    Obj getOne(Id id);

    /**
     * 根据字段名和值，获取一个
     *
     * @param field 字段名
     * @param value 值
     * @return 获取的对象
     */
    Obj selectOneByField(String field, Object value);
}
